# version: 3.8.0
# author: hmm
# time: 2019/10/31 15:31

# abs(x) 返回一个数的绝对值。 参数可以是一个整数或浮点数。 如果参数是一个复数，则返回它的模
print(abs(-0.8))

# all(iterable) 如果 iterable 的所有元素为真（或迭代器为空），返回 True
print(all([0, 1, 2]))

# any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False，则返回 False，如果有一个为 True，则返回 True。
# 元素除了是 0、空、FALSE 外都算 TRUE
print(any([0]))

# ascii(object) 就像函数 repr()，返回一个对象可打印的字符串
print(ascii("姓名"))

# bin(x) 将一个整数转变为一个前缀为“0b”的二进制字符串。结果是一个合法的 Python 表达式
print(bin(3))

# bool() 函数用于将给定参数转换为布尔类型，如果没有参数，返回 False
print(bool(0))

# breakpoint(*args, **kws) 此函数会在调用时将你陷入调试器中
# breakpoint(1, 2)

# bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的，并且每个元素的值范围: 0 <= x < 256
print(bytearray())

# bytes([source[, encoding[, errors]]]) 返回一个新的“bytes”对象， 是一个不可变序列，包含范围为 0 <= x < 256 的整数。bytes 是 bytearray 的不可变版本
print(bytes(2))

# callable() 函数用于检查一个对象是否是可调用的。如果返回 True，object 仍然可能调用失败；但如果返回 False，调用对象 object 绝对不会成功。
print(callable(0))

# chr(i) 返回 Unicode 码位为整数 i 的字符的字符串格式。例如，chr(97) 返回字符串 'a'
print(chr(97))

""" classmethod """
# 把一个方法封装成类方法。 一个类方法把类自己作为第一个实参，就像一个实例方法把实例自己作为第一个实参。请用以下习惯来声明类方法:
#
# class C:
#     @classmethod
#     def f(cls, arg1, arg2, ...): ...

""" compile() """
#  函数将一个字符串编译为字节代码
a = compile("3+4+5", '', 'exec')
exec(a)

""" complex() """
#  函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串，则不需要指定第二个参数。。
print(complex(2))

""" delattr(object, name) """


#  实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许，该函数将删除指定的属性
class demo:
    name = "tom"
    age = 12


d = demo()
print(d.name)
delattr(demo, 'name')
# print(d.name)

""" dir() """
#  函数不带参数时，返回当前范围内的变量、方法和定义的类型列表；带参数时，返回参数的属性、方法列表
print(dir())

""" divmod() """
#  函数把除数和余数运算结果结合起来，返回一个包含商和余数的元组(a // b, a % b)
print(divmod(7, 2))

""" enumerate() """
#  函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列，同时列出数据和数据下标，一般用在 for 循环当中
print(list(enumerate(["a", "b", "c", "d"])))

""" eval() """
#  函数用来执行一个字符串表达式，并返回表达式的值
print(eval("1+2+3"))

"""exec(object[, globals[, locals]])"""
# 这个函数支持动态执行 Python 代码
exec("print('你好')")

"""filter()"""


# 函数用于过滤序列，过滤掉不符合条件的元素，返回由符合条件元素组成的新列表。
def is_odd(n):
    return n % 2 == 1


newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)

"""float()"""
# 函数用于将整数和字符串转换成浮点数
print(float("2"))

""" format(value[, format_spec]) """
# 将 value 转换为 format_spec 控制的“格式化”表示
print("网站名：{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))

""" frozenset()  """
# 返回一个冻结的集合，冻结后集合不能再添加或删除任何元素

""" getattr() """
#  函数用于返回一个对象属性值
class dem:
    name = "tom"

print(getattr(dem, 'name'))

""" globals()  """
# 函数会以字典类型返回当前位置的全部全局变量
print(globals())

""" hasattr() """
# 函数用于判断对象是否包含对应的属性
print(hasattr(dem, 'age'))

""" hash() """
# 用于获取取一个对象（字符串或者数值等）的哈希值。
print(hash(dem))

""" help() """
# 函数用于查看函数或模块用途的详细说明
print(help('sys'))

""" hex() """
# 函数用于将10进制整数转换成16进制，以字符串形式表示
print(hex(88))

""" id() """
# 函数用于获取对象的内存地址。
print(id(demo))

""" input() """
# 函数接受一个标准输入数据，返回为 string 类型
# input("请输入：")

""" int() """
# 函数用于将一个字符串或数字转换为整型
print(int(12.85))

""" isinstance() """
# 函数来判断一个对象是否是一个已知的类型，类似 type()。
print(isinstance(2, int))

""" issubclass(class, classinfo) """
# 方法用于判断参数 class 是否是类型参数 classinfo 的子类。
class A:
    pass
class B(A):
    pass
print(issubclass(B,A))

""" iter() """
# 函数用来生成迭代器

测试git